package cn.doitedu.day04

import cn.doitedu.day01.utils.SparkUtil
import cn.doitedu.day03.beans.Student
import org.apache.spark.rdd.RDD

/**
 * @Date 22.4.1
 * @Created by HANGGE
 * @Description
 */
object C06_转换算子_GroupBy03 {
  def main(args: Array[String]): Unit = {
    // 统计每个班级的平均分
    val sc = SparkUtil.getSc
    val rdd1 = sc.textFile("data/students.csv")

    val rdd2 = rdd1.map(line => {
      val arr = line.split(",")
      Student(arr(0).toInt, arr(1), arr(2).toInt, arr(3), arr(4).toDouble, arr(5))
    })

    val rdd3: RDD[(String, Iterable[Student])] = rdd2.groupBy(_.grade)

    // rdd2的分区数
    val p1 = rdd2.getNumPartitions
    //rdd3的分区数
    val p2 = rdd3.getNumPartitions
    println(s"分组前的RDD的分区数: $p1")
    println(s"分组后的RDD的分区数: $p2")
    // 查看每个分区中的数据
     // 分组前
     rdd2.mapPartitionsWithIndex((p, iters) => {
      val iterator = iters.map(stu => stu + "---" + p)
      iterator
    }).foreach(println)
println("_____________________________________")
    rdd3.mapPartitionsWithIndex((p, iters) => {
      val iterator = iters.map(stu => stu + "---" + p)
      iterator
    }).foreach(println)







  }

}
